package com.whfc.emp.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.emp.dto.AppEmpBaiDuFaceAttendDTO;
import com.whfc.emp.dto.AppEmpInputDataDTO;
import com.whfc.emp.enums.AttendType;
import com.whfc.emp.param.AppEmpInputDataAddParam;
import com.whfc.fuum.entity.WxUser;

import java.util.Date;
import java.util.List;

/**
 * @ClasssName AppEmpInputDataService
 * @Description 打卡记录
 * @Author hw
 * @Date 2020/12/23 9:54
 * @Version 1.0
 */
public interface AppEmpInputDataService {
    /**
     * 人员日报
     *
     * @param pageNum
     * @param pageSize
     * @param deptId
     * @param startDate
     * @param endDate
     * @param keyword
     * @return
     */
    PageData<AppEmpInputDataDTO> list(Integer deptId, Integer pageNum, Integer pageSize, Date startDate, Date endDate, String keyword) throws BizException;

    /**
     * 后台手动添加考勤数据
     *
     * @param param
     */
    void add(AppEmpInputDataAddParam param) throws BizException;

    /**
     * 删除考勤记录
     *
     * @param id
     */
    void del(Integer id) throws BizException;

    /**
     * 获取人员打卡记录
     *
     * @param deptId     组织机构ID
     * @param startTime  开始时间
     * @param endTime    结束时间
     * @param attendType 打卡类型
     * @return 打卡记录
     * @throws BizException 业务异常
     */
    List<AppEmpInputDataDTO> getEmpInputData(Integer deptId, Date startTime, Date endTime, AttendType attendType) throws BizException;

    /**
     * 获取人员打卡记录
     *
     * @param deptIdList 组织机构ID
     * @param pageSum    页码
     * @param pageSize   每页数量
     * @return 打卡记录
     * @throws BizException 业务异常
     */
    PageData<AppEmpInputDataDTO> getEmpInputData(List<Integer> deptIdList, Integer pageSum, Integer pageSize) throws BizException;

    void addWithBaiDuFace(WxUser user, AppEmpBaiDuFaceAttendDTO request) throws BizException;

    List<AppEmpInputDataDTO> list(Integer deptId, Date startDate, Date endDate);
}
